<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>对象</title>
</head>
<body>
    <script>
        let str = '' // 字符串  string
        let arr = []  // 数组  array

        // 对象 —— 万物皆对象  object
        let obj = {}  // 空对象
        console.log(obj)

        // 对象包含 属性 和 方法
        // 属性：(外观特征【名词】)  手机：黑色 6.7英寸 带毛的壳  
        //                  人：  姓名 性别 年龄 身高 体重……
        // 方法：（动作，行为【动词】）：手机：飞起来了   打电话
        //                   人： 打游戏  睡觉 吃饭 点外卖
        
        // 创建对象-方法1
        let obj2 = {
            // 属性
            name:'姜新华',
            age:18,
            grender:'男',
            hobby:'打游戏',
            color:'黄色',
            // 行为，方法
            // game sleep eat 都是方法名（自定义）
            game:function () {
                document.writeln('打游戏')
                console.log('打游戏')
            },
            sleep:function () {
                document.writeln('睡觉')
                console.log('睡觉')
            },
            eat:function () {
                document.writeln('吃饭')
                console.log('吃饭')
            }
        }
        // 修改 属性
        obj2.hobby = '爱吃饭'
        console.log(obj2.hobby)

        // 新增一个属性
        obj2.hair = '长头发'
        console.log(obj2.hair)

        // 新增方法
        obj2.play = function () {
            document.writeln('黑神话：悟空')
            console.log('黑神话：悟空')
        }
        // 调用方法  对象名.方法名
        obj2.play()

        // 删除
        delete obj2.age
        console.log(obj2)
        
        

        // 访问属性和方法（调用）
        // 调用  访问对象的属性和方法
        console.log(obj2)  // 访问/调用 整个对象
        // document.writeln(obj2) //[object Object]

        // 访问属性 用 点. 的方式   调属性的时候没有 小括号（）
        // 语法：方法名.属性名
        console.log(obj2.name)
        console.log(obj2.age)
        console.log(obj2.grender)
        console.log(obj2.hobby)
        console.log(obj2.color)

        // 调用方法 注意小括号
        obj2.game()
        obj2.sleep()
        obj2.eat()
        
        

        // 函数在对象里面 叫 方法
        // 函数在对象 外面 就叫函数
        // function study () {

        // }

        // 创建对象-方法2
        // 创建一个空对象 后给属性，后赋值（点. 的方式）
        let obj3 = {}
        // 赋值 属性
        obj3.name = '宋嘉乐'
        obj3.age = 20
        obj3.color = 'black'
        // 行为 方法
        obj3.game = function () {
            document.writeln('CSGOII')
            console.log('CSGOII')
        }
        obj3.eat = function () {
            document.writeln('在吃饭')
            console.log('在吃饭')
        }
        // 如果 名字是带横线的 或者 是变量
        // obj3.news-name = '乐乐'
        // 增加 第2种方式 [] 方括号
        obj3['news-name'] = '乐乐'


        // 调用整个对象  无括号  直接调用 对象的名字
        console.log(obj3)
        console.log(obj3.name)
        console.log(obj3.age)
        console.log(obj3.color)

        console.log(obj3['news-name'])

        // 调方法
        obj3.game()
        obj3.eat()


        

        

        // 增 删 改 查

        // 遍历对象

        // 构造函数方式
        let arr1 = []
        let arr2 = new Array()

        let obj4 = {}
        let obj5 = new Object()


    </script>
</body>
</html>